package cn.demoncat.util.mybatis.constant;

import java.util.HashMap;
import java.util.Map;

/**
 * Mapper中常用的参数名称，在Service中传参到Map时使用
 * 
 * @author yxl
 *
 */
public final class MapperConstant {

	/**
	 * 乐观锁重试失败后休眠毫秒
	 */
	public static final int REPEAT_SLEEP = 100;

	/**
	 * 描述：字段名规范常量
	 *
	 * @author 延晓磊
	 *
	 * @since 2017年3月23日
	 */
	public static class ColumnName{
		/**
		 * 字段名：是否已删除
		 */
		public static final String IS_DEL = "is_del";
		/**
		 * 字段名：父节点ID
		 */
		public static final String PARENT_ID = "parent_id";
		/**
		 * 字段名：节点层次
		 */
		public static final String NODE_LEVEL = "node_level";
		/**
		 * 字段名：排序
		 */
		public static final String SORT = "sort";
		/**
		 * 字段名：id
		 */
		public static final String ID = "id";
		/**
		 * 字段名：创建人
		 */
		public static final String CREATE_USER = "create_user";
		/**
		 * 字段名：创建时间
		 */
		public static final String CREATE_TIME = "create_time";
		/**
		 * 字段名：更新人
		 */
		public static final String UPDATE_USER = "update_user";
		/**
		 * 字段名：更新时间
		 */
		public static final String UPDATE_TIME = "update_time";
		/**
		 * 字段名：版本号
		 */
		public static final String VERSION = "version";
		/**
		 * 字段名：状态
		 */
		public static final String STATUS = "status";
		/**
		 * 字段名：企业
		 */
		public static final String ORG_ID = "org_id";
		/**
		 * 字段名：店铺
		 */
		public static final String SHOP_ID = "shop_id";
		/**
		 * 字段名：金额
		 */
		public static final String AMOUNT = "amount";
	}

	/**
	 * 描述：字段名规范常量
	 *
	 * @author 延晓磊
	 *
	 * @since 2017年3月23日
	 */
	public static class FieldName{
		/**
	     * 字段名：是否已删除
	     */
	    public static final String IS_DEL = "isDel";
	    /**
	     * 字段名：是否为父节点
	     */
	    public static final String IS_PARENT = "isParent";
	    /**
	     * 字段名：父节点ID
	     */
	    public static final String PARENT_ID = "parentId";
		/**
		 * 字段名：节点层次
		 */
		public static final String NODE_LEVEL = "nodeLevel";
	    /**
	     * 字段名：排序
	     */
	    public static final String SORT = "sort";
	    /**
	     * 字段名：id
	     */
	    public static final String ID = "id";
	    /**
	     * 字段名：创建人
	     */
	    public static final String CREATE_USER = "createUser";
	    /**
	     * 字段名：创建时间
	     */
	    public static final String CREATE_TIME = "createTime";
	    /**
	     * 字段名：更新人
	     */
	    public static final String UPDATE_USER = "updateUser";
	    /**
	     * 字段名：更新时间
	     */
	    public static final String UPDATE_TIME = "updateTime";
	    /**
	     * 字段名：版本号
	     */
	    public static final String VERSION = "version";
	    /**
	     * 字段名：状态
	     */
	    public static final String STATUS = "status";
		/**
		 * 字段名：企业
		 */
		public static final String ORG_ID = "orgId";
		/**
		 * 字段名：店铺
		 */
		public static final String SHOP_ID = "shopId";
		/**
		 * 字段名：金额
		 */
		public static final String AMOUNT = "amount";
	}
	
	/**
	 * 描述：参数名规范常量
	 *
	 * @author 延晓磊
	 *
	 * @since 2017年3月23日
	 */
	public static class ParamName{
		/**
	     * 参数名：条件
	     */
	    public static final String CONDITION = "condition";
	    /**
	     * 参数名：id集
	     */
	    public static final String IDS = "ids";
	    /**
	     * 参数名：对象、字段Map
	     */
	    public static final String OBJ = "obj";
	    /**
	     * 参数名：对象集
	     */
	    public static final String OBJS = "objs";
	    /**
	     * 参数名：分组字段
	     */
	    public static final String GROUP_COLUMNS = "groupColumns";
	    /**
	     * 参数名：查询字段
	     */
	    public static final String SELECT_COLUMNS = "selectColumns";
	    /**
	     * 参数名：排序方式
	     */
	    public static final String SORT_COLUMNS = "sortColumns";
		/**
		 * 参数名：Limit
		 */
		public static final String LIMIT_NUM = "limitNum";
	    /**
	     * 参数名：起始索引
	     */
	    public static final String PAGE_START = "pageStart";
	    /**
	     * 参数名：页长
	     */
	    public static final String PAGE_SIZE = "pageSize";
	    /**
	     * 参数名：起始时间
	     */
	    public static final String START_TIME = "startTime";
	    /**
	     * 参数名：结束时间
	     */
	    public static final String END_TIME = "endTime";
	    /**
	     * 参数名：起始创建时间
	     */
	    public static final String START_CREATE_TIME = "startCreateTime";
	    /**
	     * 参数名：结束创建时间
	     */
	    public static final String END_CREATE_TIME = "endCreateTime";
	    /**
	     * 参数名：起始更新时间
	     */
	    public static final String START_UPDATE_TIME = "startUpdateTime";
	    /**
	     * 参数名：结束更新时间
	     */
	    public static final String END_UPDATE_TIME = "endUpdateTime";
	    /**
	     * 参数名：起始最后时间
	     */
	    public static final String START_LAST_TIME = "startLastTime";
	    /**
	     * 参数名：结束最后时间
	     */
	    public static final String END_LAST_TIME = "endLastTime";
	    
	}
    
    /**
     * 描述：字段值常量
     *
     * @author 延晓磊
     *
     * @since 2017年3月23日
     */
    public static class FieldValue{
    	/**
         * 字段值：1
         */
        public static final String ONE = "1";
        /**
         * 字段值：0
         */
        public static final String ZERO = "0";
    }
    
    
	/**
	 * 描述：参数值常量
	 *
	 * @author 延晓磊
	 *
	 * @since 2017年3月24日
	 */
	public static class ParamValue{
		
		/**
		 * 空Condition
		 */
		public static final Map<String,Object> EMPTY_MAP = new HashMap<>();
	}
 
	/**
	 * 排序参数
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年8月15日
	 */
	public static final class SortParam{
		/**
		 * sort字段升序
		 */
		public static final String SORT_ASC = "sort ASC";
		/**
		 * Tree2-sort字段升序
		 */
		public static final String SORT_ASC_TREE = "t1.sort ASC,t2.sort ASC";
		/**
		 * sort字段逆序
		 */
		public static final String SORT_DESC = "sort DESC";
		/**
		 * id字段升序
		 */
		public static final String ID_ASC = "id ASC";
		/**
		 * id字段逆序
		 */
		public static final String ID_DESC = "id DESC";
		/**
		 * id IN 条件排序
		 */
		public static final String ID_IN = "field(id, %s)";
		/**
		 * create_time字段升序
		 */
		public static final String CREATE_TIME_ASC = "create_time ASC";
		/**
		 * create_time字段逆序
		 */
		public static final String CREATE_TIME_DESC = "create_time DESC";
		/**
		 * update_time字段升序
		 */
		public static final String UPDATE_TIME_ASC = "update_time ASC";
		/**
		 * update_time字段逆序
		 */
		public static final String UPDATE_TIME_DESC = "update_time DESC";
		/**
		 * start_time字段升序
		 */
		public static final String START_TIME_ASC = "start_time ASC";
		/**
		 * start_time字段逆序
		 */
		public static final String START_TIME_DESC = "start_time DESC";
		/**
		 * end_time字段升序
		 */
		public static final String END_TIME_ASC = "end_time ASC";
		/**
		 * end_time字段逆序
		 */
		public static final String END_TIME_DESC = "end_time DESC";

	}
}
